package com.hydra.base.operate.log.annotation;

import com.hydra.base.operate.log.enumeration.LogFieldType;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * 操作日志对应字段注解
 * 标记在字段上，判断是否做出了修改，并记录日志
 * @author 陈煜敏
 * @date 2022/12/08
 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@SuppressWarnings("all")
public @interface OperateLogProperty {

    /**属性名*/
    @AliasFor("name")
    String value() default "";

    /**属性名*/
    @AliasFor("value")
    String name() default "";

    /**是否配置了字典值*/
    String dict() default "";

    /**是否需要读取目标的子属性*/
    String property() default "";

    /**是否需要读取数组目标的子属性*/
    String listIdProperty() default "";

    /**是否需要读取数组目标的子属性*/
    String listProperty() default "";

    /**
     * 类型
     */
    LogFieldType type() default LogFieldType.String;

}
